package com.baoyouqun.domain.Enum;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;

@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum DemandInteractTypeEnum {
    /**
     * 点赞操作
     * value：系统存储值（对应数据库字段 type=1）
     * name：前端 / 业务显示名称
     */
    LIKE("1", "点赞"),
    /**
     * 点踩操作
     * value：系统存储值（对应数据库字段 type=-1）
     * name：前端 / 业务显示名称
     */
    DISLIKE("-1", "点踩");
    /**
     * 系统存储标识（与数据库字段 type 的值对应，Byte 类型）
     */
    @EnumValue
    private final String value;
    /**
     * 前端 / 业务展示名称
     */
    private final String name;

    // 构造方法：初始化存储值和显示名称
    DemandInteractTypeEnum(String value, String name) {
        this.value = value;
        this.name = name;
    }

    /**
     * 根据系统存储值（String 类型）匹配枚举
     *
     * @param value 数据库中的操作类型值（如 1 或 - 1）
     * @return 对应的枚举实例
     * @throws IllegalArgumentException 当值不匹配时抛出异常
     */
    public static DemandInteractTypeEnum valueOfDbValue(String value) {
        for (DemandInteractTypeEnum type : values()) {
            if (type.value.equals(value)) {
                return type;
            }
        }
        throw new IllegalArgumentException("无效的需求交互操作类型值：" + value);
    }
}
